home *** CD-ROM | disk | FTP | other *** search
Wrap
Applesoft BASIC Source Code | 1989-04-18 | 7.0 KB | 243 lines | [FC] Applesoft BASIC Program (0x0801)
10 REM SOFTDISK COPY 20 REM (C) 1988 30 REM SOFTDISK INC. 40 REM BY TOM HALL 50 REM VERSION 1.4 60 POKE 104,11: GOTO 1 51753 256:DP = PEEK(IN -2) + PEEK(IN -1) *256:ZC = 15872 10 INVERSE : PRINT SPC( 40) 20 FOR I = 2 TO 23 30 VTAB I: HTAB 1: INVERSE : PRINT " ";: NORMAL : PRINT SPC( 38);: INVERSE : PRINT " "; 35 NORMAL 40 IF I = 10 THEN VTAB I: HTAB 11: PRINT "SOFTDISK'S FILECOPY" 2327 }<CTRL-0x0a> GET <CTRL-0x0a> SPEED= 389 d<CTRL-0x09> HGR2 <CTRL-0x04> SPEED= V DEL 34048 45065 6 SAVE <CTRL-0x09> GOSUB 1 *<CTRL-0x09> GOSUB , SCRN( <CTRL-0x09> GOSUB ' LEFT$<CTRL-0x09> GOSUB "<CTRL-0x18> <UNKNOWN TOKEN><CTRL-0x09> <CTRL-0x0a><CTRL-0x0a> GOSUB <CTRL-0x19> +<CTRL-0x0a> GOSUB <UNKNOWN TOKEN> =<CTRL-0x0a> GOSUB <CTRL-0x0f> L<CTRL-0x0a> GOSUB <CTRL-0x0a> [<CTRL-0x0a> GOSUB <CTRL-0x05> SPEED= 34144 19341 <CTRL-0x0a> 2634 ` SPEED= <CTRL-0x0c> <UNKNOWN TOKEN> GET GOSUB - PLOT NORMAL <CTRL-0x09> SPEED= 43273 36105 <UNKNOWN TOKEN><CTRL-0x09> PLOT <CTRL-0x04><CTRL-0x0a> PLOT %<CTRL-0x0a> IF NORMAL <CTRL-0x09> PLOT USR<CTRL-0x09><CTRL-0x18>i<CTRL-0x04> PLOT <UNKNOWN TOKEN><CTRL-0x09><CTRL-0x18>i<CTRL-0x04> PLOT <CTRL-0x05><CTRL-0x0a> PLOT &<CTRL-0x0a><CTRL-0x18>`8L HOME <CTRL-0x09> 48896 THEN ONERR <CTRL-0x09>`<CTRL-0x0a>}<CTRL-0x0a> LEN<CTRL-0x06> 44 <CTRL-0x0c> RETURN -<CTRL-0x0a>C RETURN <CTRL-0x03><CTRL-0x07> 2494 `<CTRL-0x07> GET <CTRL-0x0a> SPC( <CTRL-0x01> 51391 <<CTRL-0x09>`<CTRL-0x03>}<CTRL-0x0a> 54957 <CTRL-0x09> PLOT VAL<CTRL-0x09> 2532 `<CTRL-0x03><CTRL-0x01> 48896 +<UNKNOWN TOKEN><CTRL-0x09>`<CTRL-0x03> GET <CTRL-0x0a> 54957 <CTRL-0x09> PLOT <CTRL-0x03><CTRL-0x0a> 2562 `<CTRL-0x04><CTRL-0x01> 4 <CTRL-0x03> IF <UNKNOWN TOKEN><CTRL-0x09> PLOT $<CTRL-0x0a> IF <CTRL-0x08><CTRL-0x0a> PLOT '<CTRL-0x0a> IF <CTRL-0x09><CTRL-0x0a> PLOT (<CTRL-0x0a> 2595 `<CTRL-0x04><CTRL-0x02> 3 <CTRL-0x03> IF <CTRL-0x08><CTRL-0x0a> - 2477 <CTRL-0x0a> -<CTRL-0x04> = <CTRL-0x02>8`<CTRL-0x18>` IF FRE<CTRL-0x09> PLOT K<CTRL-0x0a> 2634 `<CTRL-0x01> 36105 Z<CTRL-0x0a> 2649 `<CTRL-0x01><CTRL-0x02> VTAB <CTRL-0x03> CLEAR ONERR <CTRL-0x09> NORMAL o<CTRL-0x0a> LEFT$ TAN<CTRL-0x0e> = <UNKNOWN TOKEN> 2671 `<CTRL-0x07> GET <CTRL-0x0a> LEN<CTRL-0x06> 3 <CTRL-0x13> RETURN <CTRL-0x06><CTRL-0x10><CTRL-0x15>/HARD1/SD/C/DINO.EGGS 12120 DINO.EGGSS 11 13360 ,8: GOTO 6 1 RESTORE : PRINT CHR$(21) 2 TEXT : HOME 3 VER = 1.4 4 ZC = 2304:IN = ZC +7:SP = PEEK(ZC +3) + PEEK(ZC +4) *256:DP = PEEK(ZC +5) + PEEK(ZC +6) *256 6 INVERSE : PRINT SPC( 40) 7 FOR I = 2 TO 23 8 VTAB I: HTAB 1: INVERSE : PRINT " ";: NORMAL : PRINT SPC( 38);: INVERSE : PRINT " ";: NORMAL 9 IF I = 10 THEN VTAB I: HTAB 11: PRINT "SOFTDISK'S FILECOPY" 10 IF I = 12 THEN VTAB I: HTAB 9: PRINT "VERSION "VE" BY TOM HALL" 11 IF I = 14 THEN VTAB I: HTAB 12: PRINT "(C)1988 SOFTDISK" 12 NEXT I 13 INVERSE : VTAB 24: HTAB 1: PRINT SPC( 39);: POKE 2039,32 14 FOR I = 769 TO 768 + PEEK(768):P$ = CHR$( PEEK(I)): IF P$ > = "a" AND P$ < = "z" THEN P$ = CHR$( ASC(P$) -32) 15 ART$ = ART$ +P$: NEXT I 16 VTAB 2: HTAB 2 17 FOR I = 16 TO 20: VTAB I: HTAB 6: PRINT SPC( 30): NEXT 18 NORMAL 19 FOR I = 17 TO 19: VTAB I: HTAB 7: PRINT SPC( 28);: NEXT I 20 VTAB 18: HTAB 15: PRINT "PRESS A KEY";: GOSUB 196 21 POKE 32,1: POKE 33,38: POKE 34,1: POKE 35,23: HOME 22 INVERSE : VTAB 1: HTAB 5: PRINT "SOFTDISK FILECOPY VERSION "VE: NORMAL 23 POKE 32,3: POKE 33,34: VTAB 4: HTAB 1 24 PRINT "THIS PROGRAM WILL COPY ALL": PRINT "THE FILES ASSOCIATED WITH": PRINT MID$ (ART$,3): PRINT "TO THE DISK OF YOUR CHOICE": PRINT : PRINT : PRINT "PLEASE PRESS A KEY." 25 PRINT "([ESC] TO LEAVE FILECOPY)" 26 GOSUB 196: HOME : IF K$ = CHR$(27) THEN GOTO 198 27 PRINT : PRINT 28 PRINT "FILECOPY NOW WANTS TO FIGURE": PRINT "OUT YOUR SYSTEM SETUP. MAKE SURE": PRINT "THAT THE DISK YOU WANT TO COPY": PRINT "FILES TO IS IN ONE OF YOUR DRIVES." 29 PRINT : PRINT : PRINT "PRESS A KEY TO READ SYSTEM SETUP.": PRINT "DO NOT REMOVE SOFTDISK.": PRINT "([ESC] WILL GO BACK TO SOFTDISK.)" 30 GOSUB 196: IF K$ = CHR$(27) THEN 198 31 HOME 32 POKE 32,1: POKE 33,38: VTAB 4: HTAB 3: PRINT "READING SYSTEM SETUP...": PRINT : HTAB 3: PRINT "(PRESS [ESC] TO LEAVE FILECOPY)" 33 POKE 34,1: POKE 35,23 34 VTAB 2: POKE 32,1: POKE 33,38: PRINT 35 DIM P$(12),D(12,1),F$(32),AD(12,1),AD$(12),SB$(127) 36 REM <CTRL-0x0a>GETBUFR 37 ONERR GOTO 164 38 CALL IN 39 IF PEEK(0) = 86 THEN HOME : VTAB 4: HTAB 3: PRINT "NO SPACE FOR FILE BUFFERS": HTAB 3: PRINT "PRESS A KEY.": GOSUB 196: GOTO 198 40 PRINT CHR$(4)"PREFIX": INPUT PF$ 41 PF$ = PF$ + LEFT$(ART$,1) +"/" 42 POKE -16368,0 43 REM <CTRL-0x0a>ONLINE 44 FOR I = 1 TO 12:P$(I) = "": NEXT 45 DD = 1:SS = 7:CP = 1 46 ONERR GOTO 50 47 VTAB 21: PRINT CHR$(4)"PREFIX,S"SS",D"DD 48 PRINT CHR$(4)"PREFIX": INPUT P$(CP) 49 IF PEEK( -16384) = 155 THEN 198 50 CP = CP +1:DD = DD +1: IF DD = 3 THEN DD = 1:SS = SS -1: IF SS = 1 THEN 53 51 GOTO 47 52 REM <CTRL-0x0a>S,D INTO VARS 53 POKE 216,0: POKE 222,0 54 TS = 7:TD = 1: FOR C9 = 1 TO 12:D(C9,0) = TS:D(C9,1) = TD:TD = TD +1: IF TD >2 THEN TD = 1:TS = TS -1 55 NEXT 56 PRINT CHR$(4)"PREFIX " LEFT$(PF$, LEN(PF$) -2) 57 PRINT CHR$(4)"BLOAD "ART$".T,A$300,B5,L2" 58 BV = 256 * PEEK(769) + PEEK(768) 59 PRINT CHR$(4)"OPEN "ART$".T,TBIN" 60 PRINT CHR$(4)"READ "ART$".T" 61 FOR I = 0 TO 4: GET K$: NEXT I:BV = BV -( ASC(K$) *2 +3) 62 FOR I = 1 TO ASC(K$): GET K$: GET K$: NEXT I 63 FC = 0 64 GET K$: GET K$ 65 GET K$: IF K$ = "@" OR K$ = CHR$(0) THEN 70 66 IF K$ = "" OR BV <1 THEN 70 67 L = ASC(K$):F$(FC) = "": FOR I = 1 TO L: GET K$:F$(FC) = F$(FC) +K$:BV = BV -1: NEXT I 68 IF BV <1 THEN 65 69 FC = FC +1: GOTO 65 70 PRINT CHR$(4)"CLOSE" 71 POKE 34,1: POKE 35,23: HOME 72 FC = FC -1:SRC = 0:SC = 0 73 REM <CTRL-0x0a>ACTV DRVS 74 ND = 1: FOR I = 1 TO 12: IF P$(I) < >"" AND P$(I) < >"/RAM/" THEN ND = 0:AD$(SC) = P$(I):AD(SC,0) = D(I,0):AD(SC,1) = D(I,1):SC = SC +1:LD = I 75 NEXT I 76 IF ND = 1 THEN VTAB 12: HTAB 3: PRINT "THERE ARE NO VOLUMES ONLINE.": VTAB 14: HTAB 14: PRINT "PRESS A KEY": GOSUB 196: GOTO 198 77 IF SC = 1 THEN VTAB 12: HTAB 3: PRINT "SOURCE AND TARGET DRIVES NOT": VTAB 13: HTAB 3: PRINT "FOUND. PRESS A KEY.": GOSUB 196: GOTO 198 78 REM <CTRL-0x0a>PICK VOL 79 VTAB 3: HTAB 3: PRINT "MOVE HIGHLIGHT ONTO THE NAME OF": HTAB 3: PRINT "YOUR DESTINATION DISK:" 80 VTAB 21: HTAB 2: PRINT "ARROWS MOVE HIGHLIGHT/RETURN SELECTS" 81 FOR I = 0 TO SC -1: VTAB I +6: HTAB 4: PRINT "S"AD(I,0)"D"AD(I,1)"="AD$(I): NEXT 82 CP = 0 83 VTAB CP +6: HTAB 9: INVERSE : PRINT AD$(CP) 84 GOSUB 196: VTAB CP +6: HTAB 9: NORMAL : PRINT AD$(CP) 85 IF K$ = CHR$(27) THEN 198 86 IF K$ = CHR$(8) OR K$ = CHR$(11) THEN CP = CP -1: GOTO 89 87 IF K$ = CHR$(21) OR K$ = CHR$(10) THEN CP = CP +1: GOTO 89 88 IF K$ = CHR$(13) THEN 93 89 IF CP = SC THEN CP = 0 90 IF CP = -1 THEN CP = SC -1 91 GOTO 83 92 REM <CTRL-0x0a>SUBDIRS? 93 HOME : VTAB 4: HTAB 3: PRINT "CHECKING "AD$(CP): HTAB 3: PRINT "FOR SUBDIRECTORIES..." 94 ONERR GOTO 135 95 PRINT CHR$(4)"PREFIX,S"AD(CP,0)",D"AD(CP,1) 96 DC = 0 97 PRINT CHR$(4)"OPEN "AD$(CP)",TDIR" 98 PRINT CHR$(4)"READ "AD$(CP) 99 INPUT K$: INPUT K$: INPUT K$ 100 INPUT K$: ON ( NOT ( LEN(K$))) GOTO 106 101 F$ = MID$ (K$,2,15):TYP$ = MID$ (K$,18,3) 102 ON TYP$ < >"DIR" GOTO 100 103 SB$(DC) = F$ 104 IF RIGHT$(SB$(DC),1) = " " THEN SB$(DC) = LEFT$(SB$(DC), LEN(SB$(DC)) -1): GOTO 104 105 DC = DC +1: GOTO 100 106 PRINT CHR$(4)"CLOSE" 107 HOME : VTAB 3: HTAB 3 108 IF DC = 0 THEN PRINT "I FOUND NO SUBDIRECTORIES IN": HTAB 3: PRINT AD$(CP)".": FOR QQ = 1 TO 3000: NEXT QQ: GOTO 143 109 HTAB 3: PRINT "MOVE HIGHLIGHT TO SELECT A": HTAB 3: PRINT "FURTHER SUBDIRECTORY:" 110 VTAB 17: HTAB 2: PRINT "SPACEBAR STARTS FILECOPY TO:" 111 POKE 32,2: POKE 33,36: VTAB 18: HTAB 1: PRINT AD$(CP): POKE 32,1: POKE 33,38 112 VTAB 22: HTAB 8: PRINT "ARROWS:MOVE HIGHLIGHT": HTAB 8: PRINT "RETURN:READ "; 113 TP = 0:BT = 7 114 CS = 0 115 IF BT >DC -1 THEN BT = DC -1 116 GOSUB 141 117 FOR I = 0 TO BT -TP: VTAB I +7: HTAB 3 118 PRINT " "SB$(I +TP)" " 119 NEXT I 120 VTAB 6: HTAB 3: PRINT "----------------": VTAB 15: HTAB 3: PRINT "----------------" 121 IF TP >0 THEN VTAB 6: HTAB 3: PRINT "------MORE------" 122 IF BT <DC -1 THEN VTAB 15: HTAB 3: PRINT "------MORE------" 123 VTAB 23: HTAB 20: NORMAL : PRINT SPC( 15);: VTAB 23: HTAB 20: INVERSE : PRINT " "SB$(CS +TP)" "; 124 VTAB CS +7: HTAB 3: INVERSE : PRINT " "SB$(CS +TP)" " 125 GOSUB 196: NORMAL : VTAB CS +7: HTAB 3: PRINT " "SB$(CS +TP)" " 126 IF (K$ = CHR$(11) OR K$ = CHR$(8)) AND CS = 0 AND TP >0 THEN TP = TP -8:BT = TP +7:CS = 7: GOTO 116 127 IF (K$ = CHR$(11) OR K$ = CHR$(8)) THEN IF CS >0 THEN CS = CS -1: GOTO 123 128 IF (K$ = CHR$(10) OR K$ = CHR$(21)) AND CS = BT -TP AND BT <DC -1 THEN TP = TP +8:BT = BT +8: GOTO 114 129 IF (K$ = CHR$(10) OR K$ = CHR$(21)) THEN IF CS <BT -TP THEN CS = CS +1: GOTO 123 130 IF K$ = CHR$(27) THEN 198 131 IF K$ = CHR$(13) THEN 139 132 IF K$ = " " THEN 143 133 QQ = PEEK( -16336) - PEEK( -16336) + PEEK( -16336) - PEEK( -16336): GOTO 123 134 REM <CTRL-0x0a>SUBDIR ERRS 135 IF PEEK(222) = 5 THEN POKE 216,0: GOTO 106 136 PRINT "ERROR:" PEEK(222) 137 GOTO 164 138 REM <CTRL-0x0a>ADD DIR TO PATH 139 AD$(CP) = AD$(CP) +SB$(CS +TP) +"/": GOTO 93 140 REM <CTRL-0x0a>CLR BTM 141 POKE 34,5: POKE 35,15: HOME : POKE 34,1: POKE 35,23: RETURN 142 REM <CTRL-0x0a>COPY 143 HOME : VTAB 4: HTAB 3: PRINT "PRESS A KEY TO START": PRINT " COPYING FILES FROM:": PRINT : PRINT " "PF$: PRINT : PRINT " TO "AD$(CP)".": PRINT : PRINT " PRESS [ESC] TO CANCEL COPY." 144 POKE -16368,0: WAIT -16384,128: GET K$: IF K$ = CHR$(27) THEN 198 145 HOME : VTAB 4: HTAB 3: PRINT "COPYING FILES FROM": VTAB 5: HTAB 3: PRINT PF$: VTAB 6: HTAB 3: PRINT "TO "AD$(CP)"..." 146 ONERR GOTO 164 147 POKE 34,10 148 FOR I = 0 TO FC 149 IF RIGHT$(F$(I),2) = ".G" OR RIGHT$(F$(I),2) = ".g" THEN 160 150 HOME : HTAB 3: PRINT "COPYING "F$(I): HTAB 3: PRINT "TO "AD$(CP) 151 VTAB 23: HTAB 8: PRINT "[ESC] EXITS TO SOFTDISK."; 152 IF PEEK( -16384) = 155 THEN 198 153 SP$ = PF$ +F$(I):DP$ = AD$(CP) +F$(I) 154 POKE SP, LEN(SP$): FOR A = 1 TO LEN(SP$): POKE SP +A, ASC( MID$ (SP$,A,1)): NEXT A 155 POKE DP, LEN(DP$): FOR A = 1 TO LEN(DP$): POKE DP +A, ASC( MID$ (DP$,A,1)): NEXT A 156 POKE 0,0 157 CALL ZC 158 IF PEEK(0) = 71 THEN VTAB 18: HTAB 3: PRINT "FILE EXISTS. COPY OVER IT? (Y/N)";: GET K$: ON K$ = CHR$(27) GOTO 198: ON K$ < >"Y" AND K$ < >"y" GOTO 160: PRINT CHR$(4)"UNLOCK"DP$: PRINT CHR$(4)"DELETE"DP$: GOTO 150 159 IF PEEK(0) < >0 THEN 164 160 NEXT I 161 POKE 34,1: HOME : VTAB 4: HTAB 3: PRINT "DONE COPYING. PRESS A KEY.": GOSUB 196: GOTO 198 162 END 163 REM <CTRL-0x0a>ERROR 164 POKE 34,1: HOME : VTAB 4 165 NORMAL 166 IF NOT ( PEEK(222)) THEN 184 167 X = PEEK(222): POKE 216,0 168 HTAB 3 169 PRINT "BASIC ERROR "X" ENCOUNTERED:" 170 HTAB 3 171 IF X = 4 THEN PRINT "DISK WRITE PROTECTED.": GOTO 182 172 IF X = 5 THEN PRINT "END OF DATA.": GOTO 182 173 IF X = 6 THEN PRINT "PATH NOT FOUND.": GOTO 182 174 IF X = 8 THEN PRINT "I/O ERROR.": GOTO 182 175 IF X = 9 THEN PRINT "DISK FULL.": GOSUB 194: GOTO 182 176 IF X = 16 THEN PRINT "SYNTAX ERROR.": GOTO 182 177 IF X = 17 THEN PRINT "DIRECTORY FULL.": GOTO 182 178 IF X = 20 THEN PRINT "FILE BUSY.": GOTO 182 179 IF X = 21 THEN PRINT "FILE(S) STILL OPEN.": GOTO 182 180 IF X = 255 THEN PRINT "YOU PRESSED CONTROL-C.": GOTO 182 181 PRINT "I DON'T KNOW THIS ERROR." 182 HTAB 3: PRINT "PRESS A KEY.": GOSUB 196: GOTO 198 183 REM <CTRL-0x0a>MLI ERRORS<CTRL-0x0a> 184 X = PEEK(0) 185 HTAB 3: PRINT "TROUBLE COPYING FILES.": HTAB 3 186 IF X = 39 THEN PRINT "I/O ERROR";: GOTO 191 187 IF X = 43 THEN PRINT "DISK WRITE-PROTECTED";: GOTO 191 188 IF X = 66 OR X = 73 OR X = 85 OR X = 72 THEN PRINT "DISK FULL";: ON X = 72 GOTO 194: GOTO 191 189 IF X = 69 THEN PRINT "VOLUME NOT FOUND";: GOTO 191 190 PRINT "PRODOS ERROR"; 191 PRINT " (MLI ERROR "X")" 192 HTAB 3: PRINT "PRESS A KEY.": GOSUB 196: GOTO 198 193 REM <CTRL-0x0a>DELETE 194 PRINT " (MLI ERROR 72)": PRINT : HTAB 3: PRINT "ATTEMPTING TO DELETE INCOMPLETE": HTAB 3: PRINT "DESTINATION FILE...": PRINT 195 PRINT CHR$(4)"DELETE"DP$: HTAB 3: PRINT "DELETE SUCCEEDED.": PRINT : GOTO 192 196 POKE -16368,0: WAIT -16384,128: GET K$: POKE -16368,0: RETURN 197 REM <CTRL-0x0a>EXIT 198 TEXT : HOME : VTAB 12: HTAB 9: PRINT "RETURNING TO SOFTDISK" 199 POKE -16368,0 200 FOR I = 1 TO 2000: NEXT I 201 PRINT CHR$(4)"BYE" 202 END